unit tasacsabstract;

interface

type
   ITasacsProject = interface;
   ITasacsRun = interface;


   ITasacsRun = interface
   (* Purpose: Abstract interface for a tasacs run
   *)
   ['{57BFC825-FE30-4A84-B035-EED493E1E37A}']
      function GetRunName : string;
      function GetProject : ITasacsProject;
      property RunName : string read GetRunName;
      property Project : ITasacsProject read GetProject;
   end;


   ITasacsObsData = interface
   ['{3B942FE5-3E24-41EC-9A5C-A2118F5F14B3}']
      function GetCategory : Integer;
      function GetIndex : Integer;
      function GetName : string;
      function GetWeight : ITasacsObsData;
      function get_DataSourceValue(iYear, iAge : Integer) : double;
      procedure set_DataSourceValue(iYear, iAge : Integer; Value : double);
      property Category : Integer read GetCategory;
      property _Index : Integer read GetIndex;
      property Name : string read GetName;
      property Weight : ITasacsObsData read GetWeight;
   end;


   ITasacsProject = interface
   (* Purpose: Abstract interface for a tasacs project
   *)
   ['{ABD56717-31E0-4FA6-91C0-E4C3AE15ED92}']
      function GetProjectName : string;
      function GetWorkingRun : ITasacsRun;
      function GetHistoryRun(I : Integer) : ITasacsRun;
      function GetNumHistoryRuns : Integer;
      function GetObsData(I : Integer) : ITasacsObsData;
      function GetNumObsData : Integer;
      procedure SaveRun();
      procedure RestoreRun(Run : ITasacsRun);
      procedure CreateObsData();
      property ProjectName : string read GetProjectName;
      property WorkingRun : ITasacsRun read GetWorkingRun;
      property HistoryRun[I : Integer] : ITasacsRun read GetHistoryRun;
      property NumHistoryRuns : Integer read GetNumHistoryRuns;
      property ObsData[I : Integer] : ITasacsObsData read GetObsData;
      property NumObsData : Integer read GetNumObsData;
   end;

implementation

end.
